<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body> 
    上传本地代码到码云仓库     
        1.在码云上建立一个空的demo仓库，记下.git地址
        2.在本地初始化一个git仓库
        3.本地仓库与远程仓库进行关联，在本地库进行git remote add origin git@gitee.com:lujidingyouyou/gitWorkTest.gitt的操作绑定远程仓库
        4.先git pull origin master获取远程的代码（如果出现refusing to merge unrelated histories的错误，原因是两个仓库不同而导致的，需要在后面加上--allow-unrelated-histories进行允许合并，即可解决问题）
        5.本地仓库里添加了代码后，执行git add . ,git commmit -m "**"后，执行git push origin master
        

    git日常使用流程及常用代码
        1.本地初始化一个文件夹，并使他成为git仓库:进入该文件夹，执行git init命令
        2.添加一个文件或者修改了一个文件后，使用git status命令查看当前版本库的状态，会发现提示红色modifined标记，意思是提示有修改还没有进行git add提交
        3.执行 git add **.html 进行提交，再查看git status ，发现刚才的提示变绿了，证明已经提交到了暂存区
        4.然后再执行 git commit -m '****',将刚才的内容提交到版本库，此时再执行git status,会提示工作区和暂存区都已经干净

    撤销修改
        1.仅仅在工作区进行了修改，还没有git add，执行git checkout -- **.html可以丢弃工作区的修改
        2.如果修改已经提交到了暂存区，即已经git add了，这时撤销的话，应该先从暂存区取消：git reset HEAD 1.html,此时已经从暂存区撤销了（相当于回到git add之前的状态了），
        此时再执行git checkout -- 1.html,就把该修改撤销了

    文件删除恢复
        1.误删
          直接删除一个文件，然后执行git status 会提示deleted了一个文件，此时如果想恢复该文件：git checkout -- 1.html
        2.确定要删除
          一个文件已经被提交到了版本库，此时需要将它从版本库里面删除：git rm 1.html ,此时git status,会给出该文件在暂存区被deleted的绿色提示，此时还需要惊醒commit提交
          ：git commit -m '从版本库删除了1.html'

    查看某个文件的内容
        cat 1.html

    查看远程仓库信息
        git remote -v

    查看远程分支（所有分支）
        git branch -a
	git status查看显示中文乱码解决方案：
		git config --global core.quotepath false
	 
    查看文件的不同
        a.文件在本地工作区进行了修改，还没有添加到暂存区，现在是工作区与暂存区之间有不同了，使用git diff 可以查看当前项目内所有没有添加到暂存区的修改。使用 git diff 1.html则可以查看该文件的修改
        b.文件修改后，已经提交到了暂存区（git add *），此时执行git diff 不会出现任何内容,因为现在是暂存区与版本库之间有不同了，可以使用 git diff --cached,想查看某一个文件的，使用
          git diff --cached 1.html

    多人协同开发
        1.想向一个项目推送自己的代码，首先要获取推送的权限（ssh-key）
            1).本机客户端执行 ssh-keygen.exe -t rsa 就会生成密钥，然后在自己的c盘查找公钥，然后复制粘贴到公共仓库的ssh-key里，然后就具备与远程仓库沟通的权限

            2),如果需要将本地代码推送到远程仓库，，应该先执行：git pull <远程主机名> <远程分支名>:<本地分支名>(取回origin主机的next分支，与本地的master分支合并:git pull origin next:master)，或者：-----
                git fetch origin master:tmp   //获取远程服务器master分支最新代码，到本地的tmp分支上（tmp分支为自动创建的）
                git diff tmp
                git merge tmp
                git branch -d tmp
            再执行git push <远程主机名> <本地分支名>:<远程分支名>

    一般流程：
        1.查看所有分支（包括远程分支和本地分支），git branch -a ，例如有master ,dev，git branch -r（显示远程分支）
        2.本地创建一个dev分支，与远程仓库的dev分支保持一致，git branch dev
        3.将本地分支切换到dev分支，git checkout dev
        4.拉取远程dev分支到本地的dev分支，git pull origin dev，将远程dev分支与本地dev分支进行关联    (很重要)
        5.开始开发...
        6.开发完毕，git add 1.html,然后 git commit -m '***',到本地版本库
        7.在本地dev分支push代码到远程dev分支，git push origin dev（此时push，如果其他成员已经将他的代码提交到远程仓库，那么将会报错，所以需要先pull代码，然后再push）
        8.将本地dev分支提交到远程dev分支后，此时远程仓库的master分支上，其实还没有开发的新内容。
        9.领导在本地查看dev分支没问题后，执行git checkout master,切换到master分支
        10.在master上，执行git  merge dev,将dev分支的内容合并到master分支上，此时本地master分支上就有了刚刚开发的内容了。然后执行git push origin master,将本地的master 分支的内容，推动到远程master分支上
        11.将远程master分支的内容clone下来，发布到服务器上即可。
     
	git本地分支和远程分支如何关联:
		1.如果本地新建了一个分支dev，但是在远程没有，这时候push和pull指令就无法确定该跟踪谁,一般来说我们都会使其跟踪
		远程同名分支，所以可以利用git push --set-upstream origin dev，这样就可以自动在远程创建一个dev分支，然后本地分
		支会track该分支。后面再对该分支使用push和pull就自动同步。无需再指定分支。
		2.如果远程新建了一个dev分支，本地没有该分支，
			a.可以用git checkout -b dev origin/dev，这时候本地会新建一个分支名叫dev，会自动跟踪远程的同名分支dev。
			b.首先git checkout -b dev，然后使用git pull origin dev，这样就将远程origin/dev的内容拉取到本地dev分支了
		3、git branch -vv 
		可以看到master后面蓝色部分origin/master，说明master分支已经与origin/master绑定在一起了。 
		4、已经关联好了的代码，直接输入git pull 就可以同步了,
		5.这里如果没有master绑定到远程的分支，就必须使用git push origin master :master 
			git push <远程主机名> <本地分支名>:<远程分支名>
		6.git pull如果失败，有可能需要绑定当前分支与远程分支的关联关系
			git branch --set-upstream-to=origin/dev dev

</body>
</html>
